package com.cskaoyan.javase._1extends._1relation;

/**
 * 继承中父子类,到底有什么关系呢?
 * 从属关系上来说，继承中的父子类具有 "is-a" 关系。
 * 即子类 "is-a" 父类，子类是一个父类。
 * 子类可以近似地看成是一个父类，子类可以当作父类来使用。
 *
 * 如何理解这句话呢？
 * 1.从代码角度上看
 *      什么叫做子类可以当成一个父类使用呢?
 *      一个子类对象,可以当成父类去使用,也就是可以用父类引用去接收它
 *
 * 2.从定义的角度去看
 *      数据类型的定义: 一组数据的集合和基于数据的一组操作,数据 + 操作
 *      引用数据类型: 自定义的数据类型
 *          数据 = 成员变量的集合
 *          操作 = 成员方法的集合
 *     现在,子类通过继承,得到了父类的所有成员,那么从数据类型的定义上来讲
 *     子类就覆盖了父类,子类就可以当成父类去使用
 * 3.最直接的逻辑:
 *      学生是人
 *      老师也是人
 *      ...
 *      猫是动物
 *      狗是动物
 *      ...
 *
 * 以上是父子类关系,子类"is-a"父类
 * 那么反过来,父类和子类有直接关系吗? 父类"is-a"子类? 显然不可能
 * 父类的功能往往不及子类,父类是不可能当成子类去使用的
 *
 *
 * @since 17:02
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // 思考: new创建Son的对象,有几种方式接收呢?
        Son s = new Son();
        // 父类引用指向子类对象,因为子类"is-a"父类
        Father fs = new Son();

        // 子类引用指向父类对象,把父类对象当成子类使用,是不可行的
        // Son sf = new Father();
    }
}

// 父类
class Father {
}

// 子类
class Son extends Father {
}
